package com.java.yz.mysql_jdbc;

import java.io.BufferedReader;
import java.io.FileReader;
import java.sql.*;
import java.util.Properties;

/*
    使用配置文件存储基本信息
 */
public class JdbcDemo3 {
    public static void main(String[] args) {
        Connection connection = null;
        Statement statement = null;
        try {
            //创建一个配置文件
            Properties properties = new Properties();
            //加载配置文件
            properties.load(new BufferedReader(new FileReader("src/com/java/yz/mysql_jdbc/mysqlinfo.properties")));
            //根据key获取对于的value值
            String url1 = properties.getProperty("url");
            String user1 = properties.getProperty("user");
            String password1 = properties.getProperty("password");


            //加载驱动
            Class.forName("com.mysql.jdbc.Driver");

            //获取连接对象
             connection = DriverManager.getConnection(url1, user1, password1);

             //获取操作数据库对象
            statement = connection.createStatement();

            //编写sql语句
            //查询数据库里面的内容
            String sql = "select id,name,age,address from users";

            //执行sql语句
            //executeQuery() 执行查询语句
            //executeUpdate() 执行增删改语句
            //返回的是一个查询结果集对象，存储着数据
            ResultSet resultSet = statement.executeQuery(sql);
            boolean next = resultSet.next();  //如果为true 就表示上一行有数据
//            int anInt = resultSet.getInt("id");
//            //当我不知道什么类型时，可以使用getString()来获取
//            //System.out.println(anInt);
//            String string = resultSet.getString("name");
//            String string1 = resultSet.getString("age");
//            String string2 = resultSet.getString("address");

            //但是这样一个一个写就会非常复杂，所以我们使用while循环来写
            while (resultSet.next()){
                //这是根据列名来获取的数据，如果查询数据有别名的话，就按照别名来获取
//                int anInt = resultSet.getInt("id");
//                String string = resultSet.getString("name");
//                String string1 = resultSet.getString("age");
//                String string2 = resultSet.getString("address");
//                System.out.println("id号："+anInt+",姓名："+string+",年龄："+string1+",住址："+string2);


                //根据列的索引来获取数据
                int anInt = resultSet.getInt(1);
                String string = resultSet.getString(2);
                String string1 = resultSet.getString(3);
                String string2 = resultSet.getString(4);
                System.out.println("id号："+anInt+",姓名："+string+",年龄："+string1+",住址："+string2);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            if (statement != null){
                try {
                    statement.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (connection!=null){
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
